# 字符串常见操作
# 1. 查找元素
# find(子字符串，开始位置下标，结束位置下标)：检测某一个子字符串是否包含在子字符串中，如果在就返回这个子字符串开始位置的下标，否则就返回-1
param = "bingbing"
print(param.find('i'))  # i出现的第一次的下标为1
print(param.find('bing'))  # 第一个bing的b的小标为 0
print(param.find('b', 3))  # 4 从下标3位置开始找出现的第一个b
print(param.find('b', 5))  # -1 从下标5位置开始找出现的第一个b，找不到，返回-1
print(param.find('b', 3, 5))  # 4 从下标3到下标5中间找出现的第一个b

# index(子字符串，开始位置下标，结束位置下标) 检测某个子字符串是否包含字符串，如果在就返回这个子字符串开始位置的小标，否则就报错
# 遵循包前不包后
name = "sixstar"
print()
print(name.index('i'))  # 1 i出现的第一个位置索引
# print(name.index('x',3)) # 报错
print(name.index('s', 1, 5))  # 3

# count(子字符串，开始位置下标，结束位置下标) 返回某个子字符串在整个字符串中出现的次数，没有就返回0
# 遵循包前不包后
print()
print(name.count('s'))  # 2
print(name.count('c'))  # 0
print(name.count('t', 3))  # 1
print(name.count('x', 1, 3))  # 1

# 2.字符串常见判断
# startwith(子字符串，开始位置下标，结束位置下标) 判断是否以某个子字符串开头
str = "sixstar"
print(str.startswith("six"))  # True
print(str.startswith("sex"))  # False
print(str.startswith("s", 3, 6))  # True

# endswith(子字符串，开始位置下标，结束位置下标) 判断是否已某个子字符串结尾
print(str.endswith("star"))  # True
print(str.endswith("sex"))  # False
print(str.endswith("r", 3, 7))  # True

# isupper() 检测字符串所有字母都是大写，是就返回True
# islower() 检测字符串所有字母都是小写，是就返回True
print(str.isupper())  # False
print(str.islower())  # True

# 3.修改元素
# replace(旧内容，新内容，替换次数) 替换,替换次数可以省略(默认全部替换)
print()
name = "good good study,day day up"
print(name.replace("day", "haha"))
print(name.replace("day", "haha", 1))

# split(分割符号，次数) 分割 次数可以省略，默认全部分割
print(name.split(","))  # 以列表的形式返回
# 如果字符串不包含内容，就不会进行分割，会作为一个整体返回
print(name.split("*"))

# capitalize() 第一个字符大写 其它都是小写
print(name.capitalize())

# lower() 大写字母转为小写
st = "HHAAccDDee"
print(st.lower())

# upper() 小写字母转为大写
st = "HHAAccDDee"
print(st.upper())
